home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / MyButtons.p < prev    next >
Encoding:
Text File  |  1996-05-29  |  1.7 KB  |  80 lines  |  [TEXT/CWIE]

  1. unit MyButtons;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Dialogs;
  7.         
  8.     procedure GrayButton (dlg: DialogPtr; item: integer);
  9.     procedure UngrayButton (dlg: DialogPtr; item: integer);
  10.     procedure UpdateButton (dlg: DialogPtr; item: integer; active: boolean);
  11.     procedure InitButton (dlg: DialogPtr; item: integer; var active: boolean; new: boolean);
  12.     procedure SetButton (dlg: DialogPtr; item: integer; var active: boolean; new: boolean);
  13.  
  14. implementation
  15.  
  16.     uses
  17.         MyTypes;
  18.         
  19.     procedure GrayButton (dlg: DialogPtr; item: integer);
  20.         var
  21.             kind: integer;
  22.             h: Handle;
  23.             r: Rect;
  24.             ps: PenState;
  25.     begin
  26.         GetDialogItem(dlg, item, kind, h, r);
  27.         InsetRect(r, 4, 2);
  28.         GetPenState(ps);
  29.         PenPat(GetQDGlobals^.gray);
  30.         PenMode(patBic);
  31.         PaintRoundRect(r, 3, 3);
  32.         SetPenState(ps);
  33.     end;
  34.  
  35.     procedure UngrayButton (dlg: DialogPtr; item: integer);
  36.         var
  37.             kind: integer;
  38.             h: Handle;
  39.             r: Rect;
  40.     begin
  41.         GetDialogItem(dlg, item, kind, h, r);
  42.         Draw1Control(ControlHandle(h));
  43.     end;
  44.  
  45.     procedure UpdateButton (dlg: DialogPtr; item: integer; active: boolean);
  46.     begin
  47.         if not active then begin
  48.             GrayButton(dlg, item);
  49.         end;
  50.     end;
  51.  
  52.     procedure InitButton (dlg: DialogPtr; item: integer; var active: boolean; new: boolean);
  53.         var
  54.             kind: integer;
  55.             h: Handle;
  56.             r: Rect;
  57.     begin
  58.         active := new;
  59.         GetDialogItem(dlg, item, kind, h, r);
  60.         if active then begin
  61.             HiliteControl(ControlHandle(h), 0);
  62.         end else begin
  63.             HiliteControl(ControlHandle(h), 255);
  64.             GrayButton(dlg, item);
  65.         end;
  66.     end;
  67.  
  68.     procedure SetButton (dlg: DialogPtr; item: integer; var active: boolean; new: boolean);
  69.     begin
  70.         if active <> new then begin
  71.             if new then begin
  72.                 UngrayButton(dlg, item);
  73.             end else begin
  74.                 GrayButton(dlg, item);
  75.             end;
  76.             InitButton(dlg, item, active, new);
  77.         end;
  78.     end;
  79.  
  80. end.